#include <vector>
#include <algorithm>
using namespace std;
/*
 * @lc app=leetcode.cn id=46 lang=cpp
 *
 * [46] 全排列
 */

// @lc code=start
class Solution {
public:
    
    vector<vector<int>> permute(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        vector<vector<int>> res;
        do {
            res.push_back(nums);
        } while (next_permutation(nums.begin(), nums.end()));
        return res;
    }

    // void permulate(vector<int>& now, const vector<int>& nums, vector<bool>& used) {
    //     if (nums.size() == now.size()) {
    //         res.push_back(now);
    //         return;
    //     }
    //     for (int i = 0; i < nums.size(); i++) {
    //         if (!used[i]) {
    //             now.push_back(nums[i]); used[i] = true;
    //             permulate(now, nums, used);
    //             now.pop_back(); used[i] = false;
    //         }
    //     }
    // }

};
// @lc code=end

